package com.lxy.skill.config;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author lxy
 * @Date 2021/12/12 17:13
 * @Description
 */
@Configuration
public class RabbitMQConfig {
    //队列 起名：DirectQueue
    @Bean
    public Queue DirectQueue() {
        // durable:是否持久化,默认是false,持久化队列：会被存储在磁盘上，当消息代理重启时仍然存在，暂存队列：当前连接有效
        // exclusive:默认也是false，只能被当前创建的连接使用，而且当连接关闭后队列即被删除。此参考优先级高于durable
        // autoDelete:是否自动删除，当没有生产者或者消费者使用此队列，该队列会自动删除。
        //   return new Queue("DirectQueue",true,true,false);

        //一般设置一下队列的持久化就好,其余两个就是默认false
        return new Queue("DirectQueue",true);
    }

    //Direct交换机 起名：DirectExchange
    @Bean
    DirectExchange DirectExchange() {
        //  return new DirectExchange("DirectExchange",true,true);
        return new DirectExchange("DirectExchange",true,false);
    }

    //绑定  将队列和交换机绑定, 并设置用于匹配键：DirectRouting
    @Bean
    Binding bindingDirect() {
        return BindingBuilder.bind(DirectQueue()).to(DirectExchange()).with("DirectRouting");
    }
//    //绑定键
//    public final static String bindingkey = "order.skill";
//
//
//    //队列 起名：TestDirectQueue
//    @Bean
//    public Queue SecKillQueue() {
//        //Queue(String name, boolean durable, boolean exclusive, boolean autoDelete, @Nullable Map<String, Object> arguments)
//        // durable:是否持久化,默认是false,持久化队列：会被存储在磁盘上，当消息代理重启时仍然存在，暂存队列：当前连接有效
//        // exclusive:默认也是false，只能被当前创建的连接使用，而且当连接关闭后队列即被删除。此参考优先级高于durable
//        // autoDelete:是否自动删除，当没有生产者或者消费者使用此队列，该队列会自动删除。
//        //   return new Queue("TestDirectQueue",true,true,false);
//
//        //一般设置一下队列的持久化就好,其余两个就是默认false
////        return new Queue("SecKillQueue",true,false,false);
//        return new Queue(RabbitMQConfig.bindingkey,true,false,false);
//    }
//
//    //Direct交换机  name：SecKillDirectExchange
//    @Bean
//    TopicExchange SecKillDirectExchange() {
//        //DirectExchange(String name, boolean durable, boolean autoDelete, Map<String, Object> arguments)
//        return new TopicExchange("SecKillDirectExchange",true,false);
//    }
//
//    //绑定  将队列和交换机绑定, 并设置用于匹配键：Routing
//    @Bean
//    Binding bindingDirect() {
//        return BindingBuilder.bind(SecKillQueue()).to(SecKillDirectExchange()).with("order.#");
//    }

}
